// 构建一个vuex模块
export default {
	namespaced: true, // 开启命名空间、
	state: () => ({
		// 默认从本地存储获取地址数据，才可以达到持久化的目的
		address: JSON.parse(uni.getStorageSync('address') || '{}'), // 存储用户选择的地址信息对象
		token: uni.getStorageSync('token'), // 存储登录的token的
		userinfo: JSON.parse(uni.getStorageSync('userinfo') || '{}') // 直接从本地存储获取用户个人信息 -> 持久化
	}),
	// 更新地址的方法
	mutations: {
		// 更新 token 字符串
		updateToken(state, token) {
			console.log(token);
			state.token = token
			// 通过 this.commit() 方法，调用 m_user 模块下的 saveTokenToStorage 方法，将 token 字符串持久化存储到本地
			this.commit('m_user/saveTokenToStorage')
		},

		// 将 token 字符串持久化存储到本地
		saveTokenToStorage(state) {
			uni.setStorageSync('token', state.token)
		},
		updateUserInfo(state, userinfo) {
			state.userinfo = userinfo;
			// 设置用户跟人信息的时候，同时存储一份到本地存储
			this.commit('m_user/saveUserInfoToStorage');
		},
		// 提供一个持久化存储个人信息的mutations
		saveUserInfoToStorage(state) {
			uni.setStorageSync('userinfo', JSON.stringify(state.userinfo));
		},
		updateAddress(state, address) {
			// vuex里面的数据是没有持久化的功能的
			state.address = address
			// 不仅把数据更新到vuex，还要更新一份到本地存储(持久化)
			this.commit('m_user/saveAddressToStorage')
		},
		saveAddressToStorage(state) {
			// 把地址持久化存储到本地
			uni.setStorageSync('address', JSON.stringify(state.address))
		}
	},
	getters: {
		addStr(state) {
			// 把当前仓库内部的address拼接进行返回
			if (!state.address.provinceName) return ''
			const {
				provinceName,
				cityName,
				countyName,
				detailInfo
			} = state.address
			return provinceName + cityName + countyName + detailInfo
		}
	} // 用户处理用户选择的地址拼接的
}

// 1、最新的数据存储到本地存储
// 2、默认获取数据的时候，从本地存储获取数据
